<script>
    var obj1 = {
        'a': 'obj2',
        'b': '2'
    };
    var obj2 = {
        name: 'obj3'
    };

    function extend() {
        var length = arguments.length;
        var target = arguments[0] || {};
        if (typeof target != "object" && typeof target != "function") {
            // 传进来的值可能是数字，布尔值，
            target = {};
        }
        if (length == 1) {
            target = this;
            i--;
        }
        for (var i = 1; i < length; i++) {
            var source = arguments[i];
            for (var key in source) { // 使用for in会遍历数组所有的可枚举属性，包括原型。 if
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                    target[key] = source[key];
                }
            }
        }
        return target;
    }
    console.log(extend(obj1, obj2));
</script>

// 作者： FinGet // 链接： https: //www.jianshu.com/p/f8f2ccfa795c // 來源： 简书 // 简书著作权归作者所有， 任何形式的转载都请联系作者获得授权并注明出处。